import { SetMetadata } from '@nestjs/common';

/**
 * 审计日志元数据
 */
export interface AuditLogMetadata {
  /** 操作模块 */
  module: string;
  /** 操作类型 */
  operationType: number;
  /** 操作描述 */
  description?: string;
}

/**
 * 审计日志装饰器
 * 
 * 标记需要记录审计日志的 Controller 方法
 * 
 * @param metadata 审计日志元数据
 * 
 * @example
 * ```ts
 * @AuditLog({
 *   module: '用户管理',
 *   operationType: AUDIT_LOG_OPERATION_TYPE.CREATE,
 *   description: '创建用户'
 * })
 * @Post()
 * async create(@Body() dto: CreateUserDto) {
 *   return this.userService.create(dto);
 * }
 * ```
 */
export const AuditLog = (metadata: AuditLogMetadata) => 
  SetMetadata('audit-log', metadata);

